#pragma once

// Dependencies
namespace Core {
	class Color4;
	template<class T> class Point2_t;
	template<class T> class Vector3_t;
	template<class T> class Point3_t;
	template<class T> class Quaternion4_t;
	template<class T> class Transform3_t;
}

namespace Core {
namespace glExt {
	void emitColor( const Color4& color );

	template<class T>
	void emitVertex2( const Point2_t<T>& pt );

	template<class T>
	void emitVertex3( const Point3_t<T>& pt );

	template<class T>
	void emitNormal( const Vector3_t<T>& n );

	template<class T>
	void rotate( const Quaternion4_t<T>& quat ); 

	template<class T>
	void transform( const Transform3_t<T>& trans );
	
	template<class T>
	void translate( const Vector3_t<T>& vec );

	template<class T>
	void scale( const Vector3_t<T>& vec );
}
}